package org.sistemafinanciero.entity;

// Generated 02-may-2014 11:48:28 by Hibernate Tools 4.0.0

import java.math.BigInteger;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.NotEmpty;

/**
 * Boveda generated by hbm2java
 */
@Entity
@Table(name = "BOVEDA", schema = "BDSISTEMAFINANCIERO")
@XmlRootElement(name = "boveda")
@XmlAccessorType(XmlAccessType.NONE)
public class Boveda implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private BigInteger idBoveda;
	private String denominacion;
	private int abierto;
	private int estadoMovimiento;
	private int estado;
	private Moneda moneda;
	private Agencia agencia;

	private Set bovedaCajas = new HashSet(0);
	private Set historialBovedas = new HashSet(0);

	public Boveda() {
	}

	public Boveda(BigInteger idBoveda, Moneda moneda, Agencia agencia, String denominacion, boolean estado, boolean abierto, boolean estadoMovimiento) {
		this.idBoveda = idBoveda;
		this.moneda = moneda;
		this.agencia = agencia;
		this.denominacion = denominacion;
		this.estado = (estado ? 1 : 0);
		this.abierto = (abierto ? 1 : 0);
		this.estadoMovimiento = (estadoMovimiento ? 1 : 0);
	}

	public Boveda(BigInteger idBoveda, Moneda moneda, Agencia agencia, String denominacion, boolean estado, boolean abierto, boolean estadoMovimiento, Set bovedaCajas, Set historialBovedas) {
		this.idBoveda = idBoveda;
		this.moneda = moneda;
		this.agencia = agencia;
		this.denominacion = denominacion;
		this.estado = (estado ? 1 : 0);
		this.abierto = (abierto ? 1 : 0);
		this.estadoMovimiento = (estadoMovimiento ? 1 : 0);
		this.bovedaCajas = bovedaCajas;
		this.historialBovedas = historialBovedas;
	}

	@XmlElement(name = "id")
	@DecimalMin(value = "0", inclusive = false)
	@Id
	@Column(name = "ID_BOVEDA", unique = true, nullable = false, precision = 22, scale = 0)
	public BigInteger getIdBoveda() {
		return this.idBoveda;
	}

	public void setIdBoveda(BigInteger idBoveda) {
		this.idBoveda = idBoveda;
	}

	@XmlElement(name = "moneda")
	@NotNull
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_MONEDA", nullable = false)
	public Moneda getMoneda() {
		return this.moneda;
	}

	public void setMoneda(Moneda moneda) {
		this.moneda = moneda;
	}

	@XmlTransient
	@NotNull
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_AGENCIA", nullable = false)
	public Agencia getAgencia() {
		return this.agencia;
	}

	public void setAgencia(Agencia agencia) {
		this.agencia = agencia;
	}

	@XmlElement(name = "denominacion")
	@NotNull
	@Size(min = 1, max = 50)
	@NotEmpty
	@NotBlank
	@Column(name = "DENOMINACION", nullable = false, length = 100, columnDefinition = "nvarchar2")
	public String getDenominacion() {
		return this.denominacion;
	}

	public void setDenominacion(String denominacion) {
		this.denominacion = denominacion;
	}

	@XmlElement
	@NotNull
	@Min(value = 0)
	@Max(value = 1)
	@Column(name = "ESTADO", nullable = false, precision = 22, scale = 0)
	public boolean getEstado() {
		return (this.estado == 1 ? true : false);
	}

	public void setEstado(boolean estado) {
		this.estado = (estado ? 1 : 0);
	}

	@XmlElement(name = "abierto")
	@NotNull
	@Min(value = 0)
	@Max(value = 1)
	@Column(name = "ABIERTO", nullable = false, precision = 22, scale = 0)
	public boolean getAbierto() {
		return (this.abierto == 1 ? true : false);
	}

	public void setAbierto(boolean abierto) {
		this.abierto = (abierto ? 1 : 0);
	}

	@XmlElement(name = "estadoMovimiento")
	@NotNull
	@Min(value = 0)
	@Max(value = 1)
	@Column(name = "ESTADO_MOVIMIENTO", nullable = false, precision = 22, scale = 0)
	public boolean getCongelado() {
		return (this.estadoMovimiento == 1 ? true : false);
	}

	public void setCongelado(boolean estadoMovimiento) {
		this.estadoMovimiento = (estadoMovimiento ? 1 : 0);
	}

	@XmlTransient
	@OneToMany(fetch = FetchType.LAZY, mappedBy = "boveda")
	public Set<BovedaCaja> getBovedaCajas() {
		return this.bovedaCajas;
	}

	public void setBovedaCajas(Set bovedaCajas) {
		this.bovedaCajas = bovedaCajas;
	}

	@XmlTransient
	@OneToMany(fetch = FetchType.LAZY, mappedBy = "boveda")
	public Set<HistorialBoveda> getHistorialBovedas() {
		return this.historialBovedas;
	}

	public void setHistorialBovedas(Set historialBovedas) {
		this.historialBovedas = historialBovedas;
	}

}
